const { defineConfig } = require('@vue/cli-service')
const bodyParser = require('body-parser')
// 1.引入mock
const Mock = require('mockjs')
// 2.模拟数据 es6解构赋值语法
const { list } = Mock.mock({
  // 属性 list 的值是一个数组，其中含有 1 到 10 个元素
  'list|40': [{
    'id|': "@id",
    'image': '@image(200x200,@color)',
    'title': '@ctitle(30,50)',
    'price|1-100': 1
  }]
})

const users = []

module.exports = defineConfig({
  transpileDependencies: true,
  // 定义接口
  // 开发者服务器
  devServer: {
    setupMiddlewares: (mid, dev) => {
      dev.app.use(bodyParser.json()) // 使用中间件转json格式
      // 定义商品列表接口
      // dev.app.get('/api/list', (req, res) => {
      //   res.send({
      //     code: 200,
      //     data: list,
      //     total: list.length
      //   })
      // })
      // 商品列表接口-传参
      dev.app.get('/api/list', (req, res) => {
        // 第几页、每页多少条
        const { pagination, pageNum } = req.query
        // 第一次请求第一页 pagination=1，pageNum=10  |  索引下标：0 - 9
        // 第二次请求第二页 pagination=2，pageNum=10  |  索引下标：10 - 19
        res.send({
          code: 200,
          // slice(参数1，参数2)
          data: list.slice((pagination - 1) * pageNum, pagination * pageNum),  // slice(0,10)  (10,20)
          total: list.length
        })
      })
      // 详情接口
      dev.app.get('/api/detail', (req, res) => {
        const { id } = req.query
        res.send({
          code: 200,
          data: list.find(item => item.id == id)
        })
      })
      // 注册接口
      dev.app.post('/api/register', (req, res) => {
        const { username, password } = req.body
        const isAdd = users.every(item => item.username != username)
        if (isAdd) {
          users.push({
            // username: username
            username,
            password
          })
          res.send({
            code: 200,
            message: '注册成功'
          })
        } else {
          res.send({
            code: 0,
            message: "该账号已注册过了~"
          })
        }
      })
      // 登录接口
      dev.app.post('/api/login', (req, res) => {
        const { username, password } = req.body
        const user = users.find(item => item.username == username && item.password == password)
        if (user) {
          res.send({
            code: 200,
            message: '登录成功',
            token: 'yijingdengluchenggong3454'
          })
        } else {
          res.send({
            code: 0,
            message: '账号或密码错误'
          })
        }
      })
      // 搜索列表接口
      dev.app.get('/api/search', (req, res) => {
        const { value } = req.query
        res.send({
          code: 200,
          data: list.filter(item => item.title.includes(value))
        })

      })
      return mid
    }
  }
})
